/* strerror()函数以非线程安全方式实现的一种写法 */
#define _GNU_SOURCE

#include <stdio.h>
#include <string.h>

#define MAX_ERROR_LENGTH 256

static char buf[MAX_ERROR_LENGTH];

static char *strerror(int errnum)
{
    if (errnum < 0 || errnum >= _sys_nerr || NULL == _sys_errlist[errnum]) {
        snprintf(buf, MAX_ERROR_LENGTH, "Unknown error %d", errnum);
    } else {
        strncpy(buf, _sys_errlist[errnum], MAX_ERROR_LENGTH - 1);
        buf[MAX_ERROR_LENGTH - 1] = '\0'; /* 终止字符 */
    }

    return buf;
}